home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-07-03 | 1.8 KB | 66 lines | [TEXT/R*ch] |
- (* test/timer.sml
- PS 1995-03-20
- *)
-
- use "auxil.sml";
-
- local
- fun fib n = if n<2 then 1 else fib(n-1) + fib(n-2);
-
- open Time Timer
- val totalRealTime = totalRealTimer ()
- val totalCPUTime = totalCPUTimer ()
- in
-
- val test1 = check(checkRealTimer totalRealTime <= checkRealTimer totalRealTime
- andalso (checkRealTimer totalRealTime before fib 25 seq ())
- < checkRealTimer totalRealTime);
-
- local
- val rtmr = startRealTimer ();
- in
- val test2 = check(checkRealTimer rtmr <= checkRealTimer rtmr
- andalso (checkRealTimer rtmr before fib 25 seq ())
- < checkRealTimer rtmr);
- end
-
- local
- val op <= = fn ({usr=usr1, sys=sys1, gc=gc1}, {usr=usr2, sys=sys2, gc=gc2})
- => usr1 <= usr2 andalso sys1 <= sys2 andalso gc1 <= gc1;
- fun cput1 < cput2 = (cput1 <= cput2) andalso (cput1 <> cput2);
- in
- val test3 = check(checkCPUTimer totalCPUTime <= checkCPUTimer totalCPUTime
- andalso (checkCPUTimer totalCPUTime before fib 25 seq ())
- < checkCPUTimer totalCPUTime);
- val ctmr = startCPUTimer ();
- val test4 = check(checkCPUTimer ctmr <= checkCPUTimer ctmr
- andalso (checkCPUTimer ctmr before fib 25 seq ())
- < checkCPUTimer ctmr);
- end;
-
- val _ =
- let
- fun time f arg =
- let open Timer
- val cputimer = startCPUTimer ()
- val realtimer = startRealTimer ()
- val res = f arg
- val {usr, sys, gc} = checkCPUTimer cputimer;
- val rea = checkRealTimer realtimer;
- fun format t = Time.toString t
- in
- say("User: " ^ format usr ^
- " System: " ^ format sys ^
- " Gc: " ^ format gc ^
- " Real: " ^ format rea ^ "\n");
- res
- end;
-
- val _ = say "\nEach line below should show roughly \
- \the same User, System, and Gc times:\n";
- in
- map (time fib) [28, 28, 28, 28, 28, 28, 28, 28] seq ()
- end
-
- end;
-